#ifndef MA_KEY_READ_H
#define MA_KEY_READ_H

// 定义普通键的 ASCII 值（16 进制）
#define KEY_BACKSPACE   0x08 // Backspace 键
#define KEY_ENTER       0x0D // Enter 键
#define KEY_ESC         0x1B // ESC 键

// 定义扩展键的扫描码（16 进制）
#define EXTENDED_KEY    0xE0 // 扩展键标识符
#define KEY_UP          0x48 // 方向键：上
#define KEY_DOWN        0x50 // 方向键：下
#define KEY_LEFT        0x4B // 方向键：左
#define KEY_RIGHT       0x4D // 方向键：右
#define KEY_DELETE      0x53 // Delete 键

// 定义功能键的扫描码（16 进制）
#define KEY_F1          0x3B // F1 键
#define KEY_F2          0x3C // F2 键
#define KEY_F3          0x3D // F3 键
#define KEY_F4          0x3E // F4 键
#define KEY_F5          0x3F // F5 键
#define KEY_F6          0x40 // F6 键
#define KEY_F7          0x41 // F7 键
#define KEY_F8          0x42 // F8 键
#define KEY_F9          0x43 // F9 键
#define KEY_F10         0x44 // F10 键
#define KEY_F11         0x85 // F11 键
#define KEY_F12         0x86 // F12 键

// 定义按键输入结构体
typedef struct {
    int is_special_key; // 是否是特殊键 (1 表示是特殊键，0 表示是普通字符)
    int value;          // 按键的值 (ASCII 或扫描码)
} KeyInput;

/**
 * @brief 读取键盘输入的键值
 * @return 
 *      - 返回一个 KeyInput 结构体，包含按键信息。
 */
KeyInput read_key();

#endif
